About 1881 letters

About 9 minutes

#Python's arbitrary arguments in functions

In Python, the number of actual arguments passed to a function can be flexible. For example, the built-in function print can accept any number of arguments.

There are two kinds of variable-length arguments in Python: arbitrary positional arguments and arbitrary keyword arguments.

# Arbitrary positional arguments
def func(*args):
    pass

# Arbitrary keyword arguments
def func(**kwargs):
    pass

#Arbitrary Positional Arguments

These allow a function to accept any number of positional arguments, which are collected into a tuple named args:

def func(*args):
    print(args)

func(1, 2, 3)
func(1, 2, 3, 4, 5)

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

Output:

(1, 2, 3)
(1, 2, 3, 4, 5)

#Arbitrary Keyword Arguments

These allow a function to accept any number of keyword arguments, which are collected into a dictionary named kwargs:

def func(**kwargs):
    print(kwargs)

func(name='Tom', age=8, species='cat')
func(name='Jerry', age=6, species='mouse')

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

Output:

{'name': 'Tom', 'age': 8, 'species': 'cat'}
{'name': 'Jerry', 'age': 6, 'species': 'mouse'}

#Combining Them

You can combine normal parameters, arbitrary positional arguments, and arbitrary keyword arguments in one function. The order must be: normal parameters, then *args, then **kwargs:

def func(arg1, arg2, *args, **kwargs):
    pass

Here, the first two arguments go to arg1 and arg2, any additional positional arguments go to args, and all keyword arguments go to kwargs.

#Argument Forwarding

You can accept arbitrary arguments with *args and **kwargs, then forward them to another function using unpacking syntax:

def my_print(*args, **kwargs):
    print(*args, **kwargs)  # Unpack arguments

my_print('Hello', end=',')
my_print('World')

>>> Establishing WebAssembly Runtime.

>>> Standby.

Powered by Shift.

Updated: 5/21/2025

Author: PlanC

Created: 5/15/2025